﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace QLZ_For_Csharp_Demo
{   
    class QLZ_Interface
    {
        // 4096 byte fifo callback function -解压1 block数据后执行此回调
        // block_len -解压1 block的大小
        public delegate void decompress_callback(int block_len);

        // 压缩文件
        // src_data     -源文件数据
        // dst_data     -压缩后文件数据
        // pressed_len  -传入源文件大小，传回压缩后文件大小
        [DllImport("quickqlz_lib.dll", EntryPoint = "i_qlz_compress", SetLastError = false)]
        public static extern void QLZ_Compress(byte[] src_data, byte[] dst_data, ref int pressed_len);

        // 解压文件
        // src_data     -源文件数据
        // dst_data     -解压后文件数据
        // func         -解压1个block回调函数
        [DllImport("quickqlz_lib.dll", EntryPoint = "i_qlz_decompress", SetLastError = false)]
        public static extern void QLZ_Decompress(byte[] src_data, int src_len, byte[] fifo, decompress_callback func);
    }
}
